package com.bbva.general.dao;

import java.util.List;

import org.springframework.orm.hibernate3.HibernateTemplate;

import com.bbva.general.entities.Datosgenerales;
import com.bbva.general.generics.AbstractHibernateDAOImpl;
import com.bbva.general.generics.ServiceFinder;
import com.bbva.general.generics.Constantes;
import com.bbva.general.dao.DatosgeneralesDAO;
@SuppressWarnings("unchecked")
public class DatosgeneralesDAOImpl extends AbstractHibernateDAOImpl<Datosgenerales, String> 
implements DatosgeneralesDAO{

	@Override
    protected Class<Datosgenerales> getDomainClass() {
        return Datosgenerales.class;
    }
	
	public List<Datosgenerales> getTablas() {
		return ((HibernateTemplate)ServiceFinder.findBean("hibernateTemplate")).find("from " + domainClass.getName() + 
				" x where iddato = datosgenerales.iddato");
	}
	
	public List<Datosgenerales> getDatosTabla(Datosgenerales beanTablaX)
	{
		return ((HibernateTemplate)ServiceFinder.findBean("hibernateTemplate")).find("from " + domainClass.getName() + 
				" x where datosgenerales.iddato = '" + beanTablaX.getIddato() + "' and iddato <> '" + beanTablaX.getIddato() + "'");
	}
	
	public List<Datosgenerales> getDatosTabla(String idTabla)
	{
		return ((HibernateTemplate)ServiceFinder.findBean("hibernateTemplate")).find("from " + domainClass.getName() + 
				" x where datosgenerales.iddato = '" + idTabla + "' and iddato <> '" + idTabla + "'");
	}
	
	public List<Datosgenerales> getDatos(String campo, String valor, boolean esTabla, String idPadre)
	{
		if(esTabla)
		{
			return ((HibernateTemplate)ServiceFinder.findBean("hibernateTemplate")).find("from " + domainClass.getName() + 
					" x where upper(" + campo + ") = '" + valor + "' and iddato = datosgenerales.iddato");
		}
		else
		{
			return ((HibernateTemplate)ServiceFinder.findBean("hibernateTemplate")).find("from " + domainClass.getName() + 
					" x where upper(" + campo + ") = '" + valor + "' and iddato <> datosgenerales.iddato and" + 
					" datosgenerales.iddato = '" + idPadre + "'");
		}
	}
	
	public List<Datosgenerales> getLikeDatos(String campo, String valor, boolean esTabla, String idPadre)
	{
		if(esTabla)
		{
			return ((HibernateTemplate)ServiceFinder.findBean("hibernateTemplate")).find("from " + domainClass.getName() + 
					" x where upper(" + campo + ") like '%" + valor + "%' and iddato = datosgenerales.iddato");
		}
		else
		{
			return ((HibernateTemplate)ServiceFinder.findBean("hibernateTemplate")).find("from " + domainClass.getName() + 
					" x where upper(" + campo + ") like '%" + valor + "%' and iddato <> datosgenerales.iddato and" + 
					" datosgenerales.iddato = '" + idPadre + "'");
		}
	}
	
	public Datosgenerales getDato(String idDato)
	{
		List<Datosgenerales> beansTemps = ((HibernateTemplate)ServiceFinder.findBean("hibernateTemplate")).find("from " + domainClass.getName() + 
											" x where iddato = '" + idDato + "'");
		
		Datosgenerales beanObt = new Datosgenerales();
		if(beansTemps.size() > 0)
		{
			beanObt = beansTemps.get(0);
		}
		
		return beanObt; 
	}
	
	public List<Datosgenerales> getParentescos()
	{
		return ((HibernateTemplate)ServiceFinder.findBean("hibernateTemplate")).find("from " + domainClass.getName() + 
				" x where datosgenerales.iddato = '" + Constantes.TAB_PARENTESCOS + "' and iddato <> '" + Constantes.ID_REG_PARENTESCO_TITULAR + "' and " +
				"iddato <> '" + Constantes.TAB_PARENTESCOS + "'");
	}	
	
}
